Many software products make use of license verification processes to ensure effective license enforcement. According to one conventional license verification process, a medium containing a licensed software product is provided with a product key, such as a 16-character string printed on a sticker affixed to the medium or its packaging. The product key has a structure that matches a predetermined schema. During software installation, a user is prompted to enter the product key, e.g., on a keyboard of the user's computer. The software tests the entered key to determine whether it conforms to the predetermined schema. If the product key meets the schema, full functionality of the software may be unlocked and the user may gain access. If the product key does not meet the schema, the software, or certain features of the software, may remain locked and therefore inaccessible to the user.
According to another conventional license verification process, the software on a user's machine is configured to communicate online with a server, such as an activation server or a registration server. Hardware information about the user's machine is gathered, such as the machine's MAC address. The user enters a product key, and the product key is uploaded to the server along with the gathered hardware information. If an attempt is later made to activate or register the software using the same product key on a different machine, the server can detect a discrepancy in the hardware information and flag a duplicate copy. Additional steps may then be taken to ascertain whether the duplicate copy is allowed under the license and what actions should be taken if the duplicate copy is forbidden.
Some conventional software products perform license verifications rarely, such as only when the software is registered or activated. Other conventional software products perform license verifications more regularly, such as every time the software product is started.